package com.zebra.remoting.config;

import cn.hutool.core.util.StrUtil;
import lombok.*;

/**
 *  -----多主解决方案---------------
 *   主机就是最小的ID 为主机;  当TMS断线; 多个注册中心会收到该消息；由注册中serverID 最小者执行；
 *
 */
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(of = {"serverId"})
public class RegisterServerInfo {
    //id  内网ip，外网ip， 端口，服务器类型—此字段好像没用(大厅，棋牌，喇叭，捕鱼)，在线状态，在线人数，游戏id（多个逗号隔开），cmd（多个逗号隔开）！
    private int serverId;  //通过SAS服务 生成
    private String appName;
    private String inIP;
    private String outIP;
    private int port;
    private int online = -1; // -1 服务器下线  0 未连接注册中心  1 在线
    private int leader;

    private String tgInfo; //注册的服务器信息 serverType:serverId; eg. 1:234;
    private String raInfo;


    public boolean addRsInfo(ServerType serverTyp, int serverId){
        tgInfo = null == tgInfo ? "" : tgInfo;
        String rs = StrUtil.format("{}:{}, ", serverTyp.value(), serverId);
        if (tgInfo.contains(rs)){
            return false;
        }
        this.tgInfo = tgInfo + rs;
        return true;
    }

    public boolean removeRsInfo(ServerType serverTyp, int serverId){
        tgInfo = null == tgInfo ? "" : tgInfo;
        String rs = StrUtil.format("{}:{}, ", serverTyp.value(), serverId);
        if (!tgInfo.contains(rs)){
            return false;
        }
        this.tgInfo = StrUtil.removeAll(tgInfo, rs);
        return true;
    }


}
